const Koa = require('koa');
const KoaRouter = require('koa-router');
const session = require('koa-session');
const cors = require('koa2-cors');
const bodyParser = require('koa-bodyparser');
const static = require('koa-static');

// 创建实例
const app = new Koa();
const router = new KoaRouter();

// 加密 cookie 用的 secret
app.keys = ['some secret hurr'];

// session 的配置
const SESSION_CONIFG = {
    key: 'koa:sid',
};

// 登录
router.post('/login', async (ctx) => {
    // 获取登录参数
    const { username, password } = ctx.request.body;

    // 用户名密码校验
    if (username !== 'lstyr' || password !== '123123') {
        ctx.body = {
            code: 400,
            message: '用户密码错误',
        };
        return;
    }

    // 设置 session
    ctx.session.user = { username, password };

    // 登录成功
    ctx.body = {
        code: 200,
        message: '登录成功',
    };
});

// 退出登录
router.get('/logout', async (ctx) => {
    // 清除 session
    delete ctx.session.user;
    // 退出登录
    ctx.body = {
        code: 200,
        message: '登出系统',
    };
});

// 获取用户信息
router.get('/users/current', async (ctx) => {
    if (!ctx.session.user) {
        ctx.body = {
            code: 401,
            message: '请您先登录吧',
        };
        return;
    }

    // 取出 session 值
    ctx.body = {
        code: 200,
        data: {
            user: ctx.session.user,
        },
        message: '获取数据成功',
    };
});

// 服务端跨域
app.use(
    cors({
        credentials: true,
    })
);
// 托管静态资源文件
app.use(static(__dirname));
// 解析请求体
app.use(bodyParser());
// 使用 koa-session
app.use(session(SESSION_CONIFG, app));
app.use(router.routes());

app.listen(3000);
